package com.baili.service.planner;

import java.util.List;
import java.util.Map;

import com.baili.dto.ProductOrder;

/** 
 * @author iceX
 * @version 创建时间：2016年3月31日 下午2:52:58 
 * @Name: InspectorService.java
 */
public interface PlannerService {
	/**
	 * 计划人员人员-生产通知单-轮次状态查询(半成品(未制定或返工))
	 */
	public List getProductOrderByRoundTypeP(ProductOrder productOrder);
	/**
 	 * 计划人员人员-生产通知单-轮次状态查询(成品(未制定或返工))
	 */
	public List getProductOrderByRoundTypeF(ProductOrder productOrder);
	/**
	 * 计划人员人员-生产通知单-轮次状态查询(半成品(已制定))
	 */
	public List getProductOrderByRoundTypePSee(ProductOrder productOrder);
	/**
	 * 计划人员人员-生产通知单-轮次状态查询(成品(已制定))
	 */
	public List getProductOrderByRoundTypeFSee(ProductOrder productOrder);
	
	/**
	 * 计划人员人员-生产通知单-轮次状态查询(半成品)
	 */
	public List getProductOrderByRoundTypePWarning(ProductOrder productOrder);
	/**
	 * 计划人员人员-生产通知单-轮次状态查询(成品)
	 */
	public List getProductOrderByRoundTypeFWarning(ProductOrder productOrder);
	
	/**
	 * 计划人员人员-生产通知单-根据产品代码处理轮次
	 */ 
	public List handleProductOrderByProductCode(ProductOrder productOrder);
	
	public List handleProductOrderByProductCodeSchedule(ProductOrder productOrder);

	/**
	 * 计划人员人员-生产通知单-查看bom
	 */ 
	public List getBomList(ProductOrder productOrder);
	
	/**
	 * 计划人员人员-生产通知单-查看定额领料单
	 */ 
	public List getNormedList(ProductOrder productOrder);
	
	/**
	 * 计划人员人员-生产通知单-预警提示列表
	 */ 
	public List<Map<String, Object>> warning();
	
	/**
	 * 半成品统计分析
	 * @return
	 */
	public List<Map<String,Object>> getListByOvertimeType(ProductOrder productOrder) throws Exception;
	/**
	 * 半成品统计分析
	 * @return
	 */
	public List<Map<String,Object>> getListByOvertimeTypeP(ProductOrder productOrder) throws Exception;
	
	/**
	 * 成品统计分析
	 * @return
	 */
	public List<Map<String,Object>> getListByOvertimeTypeF(ProductOrder productOrder) throws Exception;
	
	/**
	 * 获取总条数 用于计算占比
	 * @return
	 */
	public int getCount();
	/**
	 * 半成品根据时间统计分析
	 * @param startTime
	 * @param overTime
	 * @return
	 */
	public Map<String, Object> getTimeTypeListByTime(String startTime, String overTime);
	
	/**
	 * 轮次制定(更新生产小组字段，更新轮次审核字段，以产品编码为条件对生产通知单表进行更新)
	 * @param ProductOrder
	 * @return
	 */
	public void updateProductOrderPTeam(ProductOrder productOrder);
	/**
	 * 轮次制定(更新生产小组字段，更新轮次审核字段，以产品编码为条件对生产通知单表进行更新)
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	public List getApprovalList(ProductOrder productOrder);
	/**
	 * 轮次制定(更新生产小组字段，更新轮次审核字段，以产品编码为条件对生产通知单表进行更新)
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	public List getProductionOrderParam(ProductOrder productOrder);
	public List<Map<String,Object>> getProcessName(ProductOrder productOrder);
	
	public List getProductTeam(ProductOrder productOrder);
	public List getBLSize();
	public List getSizeBySex(Integer sex);
	
	public List getWarningDetails(ProductOrder productOrder);
	
	public void addProductOrder(ProductOrder productOrder);
	
	public List getWarehouseAndWorkShop();
}
